Update v triggeru

Otázka od: Roman

17. 10. 2002 6:22

Ahoj,
mam tabulku Zaznamy(id,cas,hodnota) s triggerem After Update, ve kterem pri
zmene pole Hodnota chci provest:
UPDATE zaznamy SET hodnota=hodnota-old.hodnota+new.hodnota WHERE
(cas>new.cas); (tj. potrebuji pri zmene hodnoty v jednom zaznamu
aktualizovat hodnoty v nasledujicich zaznamech).
A ted nevim, jak se to bude chovat: spusti se trigger pro kazdy zaznam,
ktery z triggeru updatuji (tj. rekurzivne se mi bude ten dotaz spustet pro
kazdy nasledujici zaznam)? V pripade, ze ano, da se to nejak elegantne
vyresit v tom triggeru tak, aby se ten trigger pro updatovane zaznamy vubec
nespoustel (vypnout trigger - provest kod - zapnout trigger)?

Predem diky za odpoved,
Roman
D4, Firebird
- - - - - - - - - - - - - - - - - - - - -
http://kouzelne.misto.cz/

Odpovedá: Jiri Wendl, KSH-Data

17. 10. 2002 8:25

Ahoj,
ten trigger se ti bude spoustet pro kazdej zaznam.

Tohle bych spis resil pres StoredProc.
Vytvor si StoredProc a tu volej pro updatovani tabulky.
Uvnitr te procedury uz si muzes delat co chces.

Preji hodne zdaru
Jirka

>Ahoj,
>mam tabulku Zaznamy(id,cas,hodnota) s triggerem After Update, ve kterem pri
>zmene pole Hodnota chci provest:
>UPDATE zaznamy SET hodnota=hodnota-old.hodnota+new.hodnota WHERE
>(cas>new.cas); (tj. potrebuji pri zmene hodnoty v jednom zaznamu
>aktualizovat hodnoty v nasledujicich zaznamech).
>A ted nevim, jak se to bude chovat: spusti se trigger pro kazdy zaznam,
>ktery z triggeru updatuji (tj. rekurzivne se mi bude ten dotaz spustet pro
>kazdy nasledujici zaznam)? V pripade, ze ano, da se to nejak elegantne
>vyresit v tom triggeru tak, aby se ten trigger pro updatovane zaznamy vubec
>nespoustel (vypnout trigger - provest kod - zapnout trigger)?


Odpovedá: Jan Sebelík

17. 10. 2002 9:08

> Odesílatel: Roman <sw.maurice@seznam.cz>
> mam tabulku Zaznamy(id,cas,hodnota) s triggerem After Update, ve kterem pri
> zmene pole Hodnota chci provest:
> UPDATE zaznamy SET hodnota=hodnota-old.hodnota+new.hodnota WHERE
> (cas>new.cas); (tj. potrebuji pri zmene hodnoty v jednom zaznamu
> aktualizovat hodnoty v nasledujicich zaznamech).

No jo, rekurzivni volani triggeru, na to se musi opatrne.
Asi bych se pokusil tam pridat nejakou polozku Status, pomoci ktere bych tu
rekurzi zastavil.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================

Odpovedá: Roman

17. 10. 2002 12:39

> mam tabulku Zaznamy(id,cas,hodnota) s triggerem After Update, ve kterem
pri
> zmene pole Hodnota chci provest:
> UPDATE zaznamy SET hodnota=hodnota-old.hodnota+new.hodnota WHERE
> (cas>new.cas); (tj. potrebuji pri zmene hodnoty v jednom zaznamu
> aktualizovat hodnoty v nasledujicich zaznamech).

>No jo, rekurzivni volani triggeru, na to se musi opatrne.
>Asi bych se pokusil tam pridat nejakou polozku Status, pomoci ktere bych tu
rekurzi zastavil.

No zatim to tak resim, jenom mi to pride takove divne   Provadet to v SP
by slo taky (zaznamy by nemely byt vkladany jinak nez ze SP), jenom jsem
chtel zavest jakousi soudrznost tech zaznamu uz na urovni tabulky.

Roman
==============================
http://kouzelne.misto.cz